/*******************************************************************************
 * @file
 * @brief   串口1
 *******************************************************************************/
#include "pincfg.h"
#include "bsp.h"
#include "dataproc.h"
#include "com_obj.h"
#include "str_ext.h"
#include "bsp_uart_timer.h"
/*******************************************************************************
 * @brief   端口映射
 *******************************************************************************/
#define comPORT UART8
#define comIsr COM_UART8_IRQHandler
#define COM_IRQn UART8_IRQn
#define ComObj com.obj08
#define com_timer_handle com08_timer_handle

//#define DMA_COM_RX DMA_U08_RX
//#define DMA_COM_TX DMA_U08_TX
//#define com_tx_dma_irq com08_tx_dma_irq
/*******************************************************************************
 * @brief   硬件 FIFO 尺寸
 *******************************************************************************/
#define COM_PORT_FIFO_SIZE 1

/*******************************************************************************
 * @brief   串口缓存
 *******************************************************************************/
static uint8_t com_tx_buff[1*1024];
static uint8_t com_rx_buff[128];

/*******************************************************************************
 * @brief   RS485模式方向控制，不用时定义为空即可
 *******************************************************************************/
#define com_dir_RxEnable()  
#define com_dir_TxEnable()  

/*******************************************************************************
 * @brief   接口功能，循环模式不支持RS485
 *******************************************************************************/
#define COM_RX_EN 1
#define COM_RX_CALL_BACK_EN 1
#define MB_RS_485_MODE_EN 1
#define MB_RS_485_HALDIR_EN 0

/*******************************************************************************
 * @brief   COMMON GEN ENABLE
 *******************************************************************************/
#define COM_ISR_GEN	1
#define COM_TX_START_GEN	1
#define COM_RX_START_GEN	1

/*******************************************************************************
 * @brief   函数声明
 *******************************************************************************/
static void com_pin_cfg(void);

/*******************************************************************************
 * @brief   创建端口
 *******************************************************************************/
#include "com_port_gen.c"

/*******************************************************************************
 * @brief   com hal cfg.
 *
 * @ Pass/ Fail criteria: none
 *******************************************************************************/
static void com_pin_cfg(void)
{
	intx_alloc();

	// 关串口中断
	nvic_irq_set(COM_IRQn, 0x0F, 0);

	cpu_it.uart08 = comIsr;

	// 初始化时钟
	intx_disable();

	crm_periph_clock_enable(CRM_UART8_PERIPH_CLOCK, TRUE);
	crm_periph_reset(CRM_UART8_PERIPH_RESET, TRUE);
	crm_periph_reset(CRM_UART8_PERIPH_RESET, FALSE);

	intx_enable();
}

/*******************************************************************************
 * @brief   	com modle init .
 *
 * @ Pass/ Fail criteria: none
 *******************************************************************************/
void com08_Init(uint8_t comMode, uint32_t ulBaudRate, com_parity_type eParity)
{
	uart_timer.uart08 = 0;

	com_hal_init(comMode, ulBaudRate, eParity);

	uart_timer.uart08 = com_timer_handle;

	app_timer_task_add(uart08_timer_handle);
}
